package com.chuidiang.ejemplos.hibernate_annotations;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Entity de la tabla Alumno
 * 
 * @author Curso
 * 
 */
@Entity
@Table(name = "ALUMNO")
public class Alumno {
	@Id
	@Column(name = "idAlumno")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	Long id;

	@Basic
	@Column(name = "nombre")
	private String nombre;
	@Basic
	@Column(name = "dni")
	private String dni;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fecha_alta")
	private Date fecha_alta;
	@Basic
	@Column(name = "edad")
	private int edad;
	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "ALUMNO_FLIGHT", joinColumns = { @JoinColumn(name = "idAlumno", referencedColumnName = "idAlumno") }, inverseJoinColumns = { @JoinColumn(name = "id", referencedColumnName = "id") })
	private Set<Flight> fligths = new HashSet<Flight>();

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}

	public Date getFecha_alta() {
		return fecha_alta;
	}

	public void setFecha_alta(Date fecha_alta) {
		this.fecha_alta = fecha_alta;
	}

	public int getEdad() {
		return edad;
	}

	public void setEdad(int edad) {
		this.edad = edad;
	}

	public Set<Flight> getFligths() {
		return fligths;
	}

	public void setFligths(Set<Flight> fligths) {
		this.fligths = fligths;
	}

	@Override
	public String toString() {
		return "Alumno [id=" + id + ", nombre=" + nombre + ", dni=" + dni
				+ ", fecha_alta=" + fecha_alta + ", edad=" + edad
				+ ", fligths=" + fligths + "]";
	}

}
